package com.vnl.system.aaa.entity;

import java.io.Serializable;


import java.sql.Timestamp;
import java.util.Collection;

public interface ICompany extends Serializable {

    /**
     * 內部唯一代碼
     * @return
     */
    String getCompanyId();
    void setCompanyId(String internalId);
    
    /**
     * 公司代碼
     * @return
     */
    String getCompanyUuid();
    void setCompanyUuid(String companyUuid);
    
    /**
     * 別名簡稱
     * @return
     */
    String getAlertnativeShortName();
    void setAlertnativeShortName(String alertnativeShortName);
    
    /**
     * 別名全名
     * @return
     */
    String getAlertnativeFullName();
    void setAlertnativeFullName(String alertnativeFullName);
    
    /**
     * 簡稱
     * @return
     */
    String getShortName();
    void setShortName(String shortName);
    
    /**
     * 全名
     * @return
     */
    String getFullName();
    void setFullName(String fullName);
    
    /**
     * 描述
     * @return
     */
    String getDescription();
    void setDescription(String description);

    /**
     * 建立日期時間
     * @return
     */
    Timestamp getCreateOn();
    void setCreateOn(Timestamp createOn);
    
    /**
     * 修改日期時間
     * @return
     */
    Timestamp getUpdateOn();
    void setUpdateOn(Timestamp updateOn);
    
    /**
     * 取出公司所有的使用者
     * @return
     */
    Collection<IUser> getUsers();
    
    /**
     * 取出公司所有的部門
     * @return
     */
    Collection<IDepartment> getDepartments();
    void setDepartments(Collection<IDepartment> depts);
    
    /**
     * 取出直屬的部門
     * @return
     */
    Collection<IDepartment> getFirstTierDeparments();
    void setFirstTierDeparments(Collection<IDepartment> depts);
    
    /**
     * 取出公司的角色, 不含部門角色
     * @return
     */
    Collection<IRole> getRoles();
    void setRoles(Collection<IRole> roles);
    
}
